Написал значит я приложение, для него мне необходима поддержка смены языка интерфейса.
Не став использовать готовые компоненты я решил написать свою библиотеку. Все реализовал, но осталась одна функция, которая не хочет работать:
т.к компонентов на форме может быть множество я решил воспользоваться перебором компонентов по форме.
Вот код:
Спойлер
function SetLanguage(c: TFmxObject): boolean; stdcall; export; var UniqueID: string;
Locale: string;
cl: string; begin cl := c.ClassName; if (cl = 'TButton') or (cl = 'TLabel') or (cl = 'TCheckBox') or (cl = 'TRadioButton') or (cl = 'TSpeedButton') then begin UniqueID := (c as TPresentedTextControl).Text;
Locale := getString(UniqueID);
(c as TPresentedTextControl).Text := Locale; end; if (cl = 'TEdit') then begin UniqueID := (c as TCustomEdit).TextPrompt; if UniqueID <> '' then begin Locale := getString(UniqueID);
(c as TEdit).TextPrompt := Locale; end; end; if (cl = 'TMenuItem') then begin UniqueID := (c as TMenuItem).Text; if UniqueID <> '' then begin Locale := getString(UniqueID);
(c as TMenuItem).Text := Locale; end; end; if (cl = 'TTabItem') then begin UniqueID := (c as TTabItem).Text; if UniqueID <> '' then begin Locale := getString(UniqueID);
(c as TTabItem).Text := Locale; end; end; if (cl = 'TForm') then begin UniqueID := (c as TForm).Caption; if UniqueID <> '' then begin Locale := getString(UniqueID);
(c as TForm).Caption := Locale; end; end; end;
Вопрос
Dmitry_4501
Здравствуйте!
Написал значит я приложение, для него мне необходима поддержка смены языка интерфейса.
Не став использовать готовые компоненты я решил написать свою библиотеку. Все реализовал, но осталась одна функция, которая не хочет работать:
т.к компонентов на форме может быть множество я решил воспользоваться перебором компонентов по форме.
Вот код:
function SetLanguage(c: TFmxObject): boolean; stdcall; export;
var
UniqueID: string;
Locale: string;
cl: string;
begin
cl := c.ClassName;
if (cl = 'TButton') or (cl = 'TLabel') or (cl = 'TCheckBox') or
(cl = 'TRadioButton') or (cl = 'TSpeedButton') then
begin
UniqueID := (c as TPresentedTextControl).Text;
Locale := getString(UniqueID);
(c as TPresentedTextControl).Text := Locale;
end;
if (cl = 'TEdit') then
begin
UniqueID := (c as TCustomEdit).TextPrompt;
if UniqueID <> '' then
begin
Locale := getString(UniqueID);
(c as TEdit).TextPrompt := Locale;
end;
end;
if (cl = 'TMenuItem') then
begin
UniqueID := (c as TMenuItem).Text;
if UniqueID <> '' then
begin
Locale := getString(UniqueID);
(c as TMenuItem).Text := Locale;
end;
end;
if (cl = 'TTabItem') then
begin
UniqueID := (c as TTabItem).Text;
if UniqueID <> '' then
begin
Locale := getString(UniqueID);
(c as TTabItem).Text := Locale;
end;
end;
if (cl = 'TForm') then
begin
UniqueID := (c as TForm).Caption;
if UniqueID <> '' then
begin
Locale := getString(UniqueID);
(c as TForm).Caption := Locale;
end;
end;
end;
Получилось весьма странно конечно, но вот:
Ссылка на комментарий
8 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.